package lanqiao;
/**
 * 重复字符串【第十一届】【决赛】【A组】
 * 给定整数K和字符串S，请计算最少修改几个字符，可以使S变成一个K次字符串？(无法修改返回-1)
 * 输入
 *    2
 *    aabbaa
 * 输出
 *    2
 *
 * 思路：
 *    先把字符串分割成k份，只要将每一份的字符串改为一样的，就符合题意。
 *    易错思维一：不一定按第一份改，需要满足修改次数最少。所以尝试所有的修改方式，找到最少次数的就可以。
 *    易错思维二：不一定只按其中一节为标准进行修改，可以同时修改任意字串，只要满足最少次数就可以。
 *    所以，最终的解题方法是找到这一对应位置中哪个字母是最多的，那么剩下的字母都改为该字母是操作最少的。
 */
import java.util.*;
public class Prev_258 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int k = input.nextInt();
        String str = input.next();
        input.close();
        //无法修改的情况,直接返回-1
        if(str.length() % k != 0){
            System.out.println(-1);
            return;
        }
        /**
         * 0 1  2 3  4 5  6 7
         * a b  c a  b e  d c
         */
        //每一节的长度是sl
        int sl = str.length() / k;
        //i表示有多少列，j表示26个字母，s[i][j]表示第i列中字母j出现的次数
        int[][] s = new int[sl][26];

        for(int i=0; i<str.length(); i++){
            s[i%sl][(int)str.charAt(i)-97] ++;
        }

        int count = 0, max = 0;
        for(int i=0; i<sl; i++){
            max = 0;
            //找到出现次数最多的字母
            for(int j=0; j<26; j++){
                if(max<s[i][j]){
                    max = s[i][j];
                }
            }
            //修改剩下的字母
            count += k-max;
        }
        System.out.println(count);
    }
}
